//es6模块化
//export 修饰符 变量名 = 值
//import { 名称 ，...,} from "路径"
//export default 数据
//import 名称 from "路径"

//导出封装的异步请求地址
// axios.get('请求路径', {headers: {}, params: {键:值,...,键:值}})
// axios.delete('请求路径', {headers: {}, params: {键:值,...,键:值}})
// axios.post('请求路径', 数据对象)
// axios.put('请求路径', 数据对象)
// ----本案例特殊 post用到了qs.stringify-------------------------
// axios.post('请求路径', qs.stringify(数据对象))
// axios.put('请求路径', qs.stringify(数据对象))

//导入axios模块
import axios from "axios";

//在axios拦截器中发送成功或错误提示，需要引入Message，不能直接this.$message.success()
import { Message } from "element-ui";

//引入进度条
import NProgress from "nprogress";
import "nprogress/nprogress.css";

import router from "@/router"; //引入router，先找 @/router.js 找不到就找 @router/index.js

//配置统一请求地址
axios.defaults.baseURL = "http://kg.zhaodashen.cn";

// axios.defaults.withCredentials = true; //允许请求携带认证

//导入qs
import qs from "qs";
// import { config } from "vue/types/umd";

// 添加请求拦截器
axios.interceptors.request.use(
  function(config) {
    // console.log(config);
    // 在发送请求之前做些什么：统一加token，content-type数据编码等等
    // config.headers["token"] = localStorage.getItem("token") || "adf7cbdcdc62b07d94f86339e5687ca51"
    NProgress.start(); //请求前让其携带进度条

    let token =
      localStorage.getItem("token") || "adf7cbdcdc62b07d94f86339e5687ca51";
    config.headers.token = token;
    return config;
  },
  function(error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
axios.interceptors.response.use(
  function(response) {
    // 对响应数据做点什么：在有错误返回给catch前，用响应拦截器统一处理错误
    //发送异步请求，后端响应数据后的流程
    //执行顺序：先走响应拦截器的callback ； 再走组件调用中的then
    //留心：then中的res就是（响应拦截器callback返回的数据）
    // console.log(response);  response是http相关信息，rsponse.data是接口数据
    NProgress.done(); //关闭进度条

    //这步是进行按钮鉴权）
    if (response.data.meta.state == 401) {
      //提示无权访问
      //跳转欢迎页
      Message.error("无权访问");
      router.push("/welcome");
    }
    return response;
  },
  function(error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

//导出封装的异步请求地址
// export const getGoodsTypeApi = ()=>{
// return axios.get("http://kg.zhaodashen.cn/v2/goods/type/index.php",{params:{pagenum,pagesize}})
// }

//请求商品属性中的商品类型(goods-type-index)接口---获取到接口数据渲染到页面上
export const getGoodsTypeApi = params => {
  // params=>{pagenum,pagesize}
  return axios
    .get("/v2/goods/type/index.php", { params })
    .then(res => res.data);
};
//因为后期所有的后台请求接口都是同一个网址，所以为了避免重复写，给请求地址一个全局配置，即有了上面的配置

//请求商品删除的接口，点击删除按钮，接口的数据会被删除(goods-type-index)
export const deleteGoodsTypeApi = params => {
  // params=>{type_id}
  return axios
    .delete("/v2/goods/type/delete.php", { params })
    .then(res => res.data);
};

//请求按钮状态切换接口(goods-type-index)
export const putGoodsTypeApi = params => {
  // params=>{type_id,state}
  return axios
    .put("/v2/goods/type/state.php", qs.stringify(params))
    .then(res => res.data);
};

//请求编辑窗口接口(goods-type-index)
export const putGoodsTypeStateApi = params => {
  // params=>{type_id,type_name}
  return axios
    .put("/v2/goods/type/update.php", qs.stringify(params))
    .then(res => res.data);
};

//请求商品属性中商品类型的创建接口(goods-type-create)
export const postGoodsTypeStateApi = params => {
  // params=>{type_name}
  return axios
    .post("/v2/goods/type/create.php", qs.stringify(params))
    .then(res => res.data);
};

//请求后台首页中的访客记录的接口---获取到接口数据渲染到页面上(users-history)
export const getHistoryApi = params => {
  // params=>{pagenum,pagesize,start_time,end_time,uname}
  return axios.get("/v2/users/history.php", { params }).then(res => res.data);
};

//登陆接口
export const postLoginApi = params => {
  return axios
    .post("/v2/users/login.php", qs.stringify(params))
    .then(res => res.data);
};

//请求后台商品属性中的属性列表（商品属性）的接口----获取接口数据渲染到页面上
export const getShuxingIndex = params => {
  return axios
    .get("/v2/goods/attr/index.php", { params })
    .then(res => res.data);
};

//请求后台商品属性中的属性列表的删除功能
export const deleteShuxingIndex = params => {
  return axios
    .delete("/v2/goods/attr/delete.php", { params })
    .then(res => res.data);
};

//请求后台商品属性中的属性列表的编辑功能
export const putShuxingIndex = params => {
  return axios
    .put("/v2/goods/attr/update.php", qs.stringify(params))
    .then(res => res.data);
};

//请求后台商品属性中的属性创建的创建功能
export const postShuxingCreate = params => {
  return axios
    .post("/v2/goods/attr/create.php", qs.stringify(params))
    .then(res => res.data);
};

/* ----------------------------------------------------- */

//请求后台商品管理的商品列表的接口---获取接口数据渲染到页面上
export const getGoodsGuanIndex = params => {
  return axios.get("/v2/goods/index.php", { params }).then(res => res.data);
};

//请求后台商品管理的商品列表的删除功能  （未完成，参数有误）
export const deleteGoodsGuanIndex = params => {
  return axios.delete("/v2/goods/delete.php", { params }).then(res => res.data);
};

//请求后台商品管理的商品列表的按钮状态切换接口
export const putGoodsGuanIndex = params => {
  return axios
    .put("/v2/goods/state.php", qs.stringify(params))
    .then(res => res.data);
};

//请求后台商品管理的商品创建的创建功能
export const postGoodsGuanCreate = params => {
  return axios
    .post("/v2/goods/create.php", qs.stringify(params))
    .then(res => res.data);
};

//请求后台商品管理的商品回收站的接口----获取接口数据渲染在页面上
export const getGoodsGuanIaji = params => {
  return axios.get("/v2/goods/index.php", { params }).then(res => res.data);
};

//请求后台商品管理的商品回收站的按钮状态切换接口
export const putGoodsGuanIaji = params => {
  return axios
    .put("/v2/goods/state.php", qs.stringify(params))
    .then(res => res.data);
};

/* ----------------------------------------------------------------- */

//请求商品分类的分类列表
export const getFenleiIndex = params => {
  return axios.get("/v2/cate/index.php", { params }).then(res => res.data);
};

//请求商品分类的创建功能
export const postFenleiCreate = params => {
  return axios
    .post("/v2/cate/create.php", qs.stringify(params))
    .then(res => res.data);
};

/* ------------------------------------------------------------------ */

// //请求后台用户管理的用户列表的接口获取数据渲染列表
export const getYonghuIndex = params => {
  return axios.get("/v2/users/index.php", { params }).then(res => res.data);
};
// //请求后台用户管理的用户列表的分配角色功能
export const putYonghuIndex = params => {
  return axios
    .put("/v2/users/assign.php", qs.stringify(params))
    .then(res => res.data);
};
//请求后台用户管理的用户列表的删除功能
export const deleteYonghuIndex = params => {
  return axios.delete("/v2/users/delete.php", { params }).then(res => res.data);
};
//请求后台用户管理的用户创建功能
export const postYonghuCreate = params => {
  return axios
    .post("/v2/users/create.php", qs.stringify(params))
    .then(res => res.data);
};
//请求后台用户的用户编辑功能（即修改手机号）
export const putYonghuenit = params => {
  return axios
    .put("/v2/users/update.php", qs.stringify(params))
    .then(res => res.data);
};
/* ------------------------------------ */

//订单管理的订单管理的列表接口渲染
export const getDingdanIndex = params => {
  return axios.get("/v2/orders/index.php", { params }).then(res => res.data);
};
//获取订单管理的订单管理的删除功能
export const deleteDingdanIndex = params => {
  return axios
    .delete("/v2/orders/delete.php", { params })
    .then(res => res.data);
};

/* --------------------------------------------------------- */
//获取角色管理的角色列表的页面渲染
export const getJueseIndex = params => {
  return axios.get("/v2/roles/index.php", { params }).then(res => res.data);
};
//获取角色管理的角色列表的删除功能
export const deleteJueseIndex = params => {
  return axios.delete("/v2/roles/delete.php", { params }).then(res => res.data);
};
//获取角色管理的角色列表的编辑功能
export const postJueseIndex = params => {
  return axios
    .post("/v2/roles/create.php", qs.stringify(params))
    .then(res => res.data);
};
//给角色分配权限
export const putJueseIndex = params => {
  return axios
    .put("/v2/roles/assign.php", qs.stringify(params))
    .then(res => res.data);
};

/* -------------------------------------------------------------------------- */

/* ----------------------------------------------------- */
//请求后台权限菜单的请求数据
export const getQuanApi = params => {
  return axios.get("/v2/auth/index.php", { params }).then(res => res.data);
};
/* ------------------------------------------------------------------ */

//发送短信获取验证码接口
export const postyanzheng = mobile => {
  return axios
    .post("/v2/sms/send.php", qs.stringify(mobile))
    .then(res => res.data);
};
// export const postyanzheng = mobile => {
//     return axios({
//         method: "post",
//         url: "/v2/sms/send.php",
//         data: `mobile=${mobile}`
//     })
//         .then(res => res.data)
// }

//短信登录接口
export const postdxdenglu = params => {
  return axios
    .post("/v2/sms/login.php", qs.stringify(params))
    .then(res => res.data);
};

//检查是否授权登录，即判断用户是否在手机段点确认
export const postshouquan = params => {
  return axios
    .post("/v2/qr/check.php", qs.stringify(params))
    .then(res => res.data);
};

//获取订单模块的订单统计的接口
export const getTongji = params => {
  return axios.get("/v2/orders/total.php", { params }).then(res => res.data);
};

//获取权限列表菜单接口
export const getquanxian = params => {
  return axios.get("/v2/auth/menu.php", { params }).then(res => res.data);
};
